package com.itheima.service.impl;
import com.itheima.constant.RoomHotelConstant;
import com.itheima.entity.SysUser;
import com.itheima.entity.Userprofile;
import com.itheima.mapper.SysUserMapper;
import com.itheima.mapper.UserprofileMapper;
import com.itheima.pojo.EmailProperties;
import com.itheima.service.IUserprofileService;
import com.itheima.utils.MailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;


/**
 * 用户概况(Userprofile)表服务实现类
 *
 * @author guanhuaer
 * @since 2024-09-04 21:14:10
 */
@Service
public class UserprofileServiceImpl implements IUserprofileService {

    @Autowired
    private UserprofileMapper userprofileMapper;
    @Autowired
    private EmailProperties emailProperties;
    @Autowired
    private SysUserMapper sysUserMapper;
    public void InsertViewsUsers(){
        Integer views = 1;
    }

    /**
     * 增加浏览量何访问量
     * @param userprofile
     */
    @Override
    public void addVisitCount(Userprofile userprofile) {
        // 判断用户是否以访问过项目
        List<Userprofile> userprofiles = userprofileMapper.selectUserprofileByUserId(userprofile.getUserId());
        if (userprofiles.size() ==0){
            userprofile.setVisit(1);
            userprofileMapper.insertUserprofile(userprofile);
        }
        userprofile.setVisitorUsers(1);
        userprofileMapper.updateUserprofile(userprofile);
    }
    /**
     * 获取用户访问量
     * @param projectIds
     * @return
     */
    @Override
    public Map<String, Integer> getVisitCount(Integer[] projectIds) {
        // 查询用户访问量
        // 查询用户项目浏览量
        if (projectIds == null || projectIds.length == 0){
            return null;
        }
        Map<String, Integer> map = userprofileMapper.selectVisitCount(projectIds);
        return map;
    }

    /**
     * 向用户发送请求，是否同意重置密码
     * @param user
     */
    @Override
    public void resetPasswordEmail(SysUser user) {
        /**
         * @param to 收件人邮箱
         * @param title 邮件标题
         * @param content 邮件正文
         * @return
         */
        String title="大学生创新创业管理系统";
        String content = user.getUsername() + "您好，您收到来自大学生创新创业管理系统的密码重置请求，请点击下面的链接进行密码重置：<br>" +
                "<a href=\"" + user.getCreator() + "?userId=" + user.getId() + "&adminId=" + user.getSex() + "\" target=\"_blank\"><em><strong>【点此前往】</strong></em></a>" +
                "<p><span style=\"background-color: rgb(255, 255, 255); font-size: 14px;\">为保证您的账户安全，请在2小时内点击链接，完成。</span></p>" +
                "<p style=\"text-indent: 2em; text-align: left;\"><span style=\"color: rgb(127, 127, 127); font-size: 14px;\">为什么我会收到这封邮件？</span></p>" +
                "<p style=\"text-align: left;\"><span style=\"color: rgb(127, 127, 127); font-size: 14px;\"> &nbsp; &nbsp; 您在注册</span>" +
                "<span style=\"background-color: rgb(255, 255, 255); font-size: 14px;\"> 大学生创新创业管理系统</span>" +
                "<span style=\"color: rgb(127, 127, 127); font-size: 14px;\">时，填写了此电子邮箱作为用户邮箱，我们发送这封邮件，用以确认您是邮箱的主人，如果没有进行</span>" +
                "<span style=\"background-color: rgb(255, 255, 255); font-size: 14px;\">大学生创新创业管理系统</span>" +
                "<span style=\"color: rgb(127, 127, 127); font-size: 14px;\">的密码重置行为，请忽略此邮件。可能是有人在尝试使用您的邮箱进行密码重置，也可能是您在注册时填错了自己的邮箱。</span></p>" +
                "<p style=\"text-align: left;\"><span style=\"color: rgb(127, 127, 127); font-size: 14px;\"> &nbsp; &nbsp; 此为系统邮件，请勿回复。</span></p>";
        // 发送邮件
        boolean flag = MailUtil.sendMail(emailProperties,user.getEmail(),title,content);
    }

    public String updateUserReset(Integer userId, Integer isReset) {
        // 更新用户密码重置状态
        sysUserMapper.updateUserReset(userId, isReset);
        SysUser sysUser = sysUserMapper.selectById(userId);
        return sysUser.getRealName();
    }
}
